Functions that don’t call Hooks don’t need to be Hooks.
Code sharing: It allows sharing effects between components.
More declarative: It lets our components focus on the intent rather than the exact implementation of our Effects.
Code Quality: It makes the data flow to and from your Effects very explicit.
When React adds new features, we can remove those Effects without changing any of our components.